package com.meitianhui.convenitenbuy.module.mine.http;

/*
 *  @项目名：  ConvenientPurchase 
 *  @包名：    com.meitianhui.convenitenbuy.module.mine.http
 *  @文件名:   MineApi
 *  @创建者:   amy
 *  @创建时间:  2017/11/5 下午3:58
 *  @描述：    mine模块的网络封装
 */

import com.meitianhui.convenitenbuy.base.BaseArrayResponse;
import com.meitianhui.convenitenbuy.base.BaseResponse;
import com.meitianhui.convenitenbuy.module.mine.model.CollectedStoresBean;
import com.meitianhui.convenitenbuy.module.mine.model.ConsumerAddress;
import com.meitianhui.convenitenbuy.module.mine.model.GroupBean;
import com.meitianhui.convenitenbuy.module.mine.model.GroupDetailBean;
import com.meitianhui.convenitenbuy.module.mine.model.HXUserBean;
import com.meitianhui.convenitenbuy.module.mine.model.ShopGuiderBean;
import com.meitianhui.convenitenbuy.module.mine.model.ShoppersHistoricalBean;
import com.meitianhui.convenitenbuy.module.mine.model.StoreImageBean;
import com.meitianhui.convenitenbuy.module.mine.model.UserPaySmsVerifyResponse;
import com.meitianhui.convenitenbuy.module.mine.model.UserPhotoResponse;
import com.meitianhui.convenitenbuy.module.mine.model.UserUrlBean;
import com.meitianhui.convenitenbuy.module.order.model.bean.EmptyInfo;
import com.meitianhui.convenitenbuy.module.store.model.StoreInfo;

import java.util.List;

import okhttp3.MultipartBody;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;
import rx.Observable;

public interface MineApi {
    /*
    上传用户头像图片
     */
    @Multipart
    @POST("ops-storage/storage/upload")
    Observable<UserPhotoResponse> uploadHeadImg(@Part("app_token") String appToken, @Part("category") String ossCommunity, @Part("subffix") String subffix, @Part("up_load_file") String fileName, @Part MultipartBody.Part image);

    /*
    获取用户头像
     */
    @POST("ops-storage/storage/preview")
    Observable<List<StoreImageBean>> getHeadImg(@Query("app_token") String appToken, @Query("doc_ids") String docId);

    /*
    更新用户信息
     */
    @POST("member")
    Observable<Object> upDateUserInfo(@Query("app_token") String appToken, @Query("service") String service, @Query("params") String jsonDate);

    /**
     * 打开手机验证码获取通道
     */
    @POST("infrastructure")
    Observable<UserPaySmsVerifyResponse> getSmsCode(@Query("app_token") String appToken, @Query("service") String service);

    /**
     * 获取手机验证码
     */
    @POST("notify/send_sms_code")
    Observable<BaseResponse<EmptyInfo>> getPhoneVerifyCode(@Query("app_token") String appToken, @Query("mobile") String mobile, @Query("lock_value") String lockValue);

    /**
     * 提交用户密码设置
     */
    @POST("user/set_pay_pwd")
    Observable<EmptyInfo> submitPasswordSetting(@Query("user_token") String userToken, @Query("payment_password") String passWord, @Query("mobile") String number, @Query("sms_code") String smsCode);

    /**
     * 提交用户是否开启小额免密和短信通知
     */
    @POST("user/set_pay_option")
    Observable<Object> payWithoutPwAndSmsNotify(@Query("user_token") String userToken, @Query("small_direct") String noPw, @Query("sms_notify") String smsNotify);

    /**
     * 获取用户地址
     */
    @POST("member")
    Observable<ConsumerAddress> getUserReceivingAddress(@Query("app_token") String appToken, @Query("service") String service, @Query("params") String params);

    /**
     * 跟新和添加用户地址
     */
    @POST("member")
    Observable<Object> notifyOrAddReceivingAddress(@Query("app_token") String appToken, @Query("service") String service, @Query("params") String params);

    /**
     * 用户退出登录
     */
    @POST("user/logout")
    Observable<Object> logOut(@Query("user_token") String user_tocken);

    /**
     * 添加推荐人
     */
    @POST("member")
    Observable<BaseResponse<EmptyInfo>> bindRecommender(@Query("user_token") String user_tocken, @Query("service") String service, @Query("params") String params);

    /**
     * 上传用户反馈信息
     */
    @POST("user/feedback")
    Observable<EmptyInfo> upLoadFadeBack(@Query("user_token") String user_tocken, @Query("category") String category, @Query("contact") String contact, @Query("data_source") String data_sourse, @Query("desc1") String desc1, @Query("attachment") String attachment);

    /**
     * 获取用户收藏门店
     */
    @POST("member")
    Observable<BaseResponse<CollectedStoresBean>> getUserCollectionStore(@Query("app_token") String appToken, @Query("service") String service, @Query("params") String params);

    /**
     * 店铺收藏
     *
     * @param appToken
     * @param service
     * @param params
     * @return
     */

    @POST("member")
    Observable<BaseResponse<EmptyInfo>> collectStore(@Query("app_token") String appToken, @Query("service") String service, @Query("params") String params);

    /**
     * @param appToken
     * @param service
     * @param params
     * @return
     */
    @POST("member")
    Observable<BaseArrayResponse<String>> getSystemNotify(@Query("app_token") String appToken, @Query("service") String service, @Query("params") String params);

    /**
     * 获取群组信息
     */
    @POST("community")
    Observable<BaseArrayResponse<GroupBean>> getMsgGroup(@Query("user_token") String user_tocken, @Query("service") String service, @Query("params") String params);

    /**
     * 获取群组详细信息
     */
    @POST("community")
    Observable<BaseArrayResponse<GroupDetailBean>> getMsgGroupDetail(@Query("user_token") String user_tocken, @Query("service") String service, @Query("params") String params);

    /**
     * 获取群组详细信息
     */
    @POST("community")
    Observable<BaseArrayResponse<UserUrlBean>> getMsgGroupMember(@Query("user_token") String user_tocken, @Query("service") String service, @Query("params") String params);

    /**
     * 获取个人聊天信息
     */
    @POST("community")
    Observable<BaseResponse<HXUserBean>> getMsgSingle(@Query("user_token") String user_tocken, @Query("service") String service, @Query("params") String params);

    /**
     * 获取成为店铺导购的信息
     * @param user_tocken
     * @param service
     * @param page
     * @param params
     * @return
     */
    @POST("member")
    Observable<BaseResponse<ShopGuiderBean>> getShopGuider(@Query("user_token") String user_tocken, @Query("service") String service,@Query("page") String page, @Query("params") String params);


    /**
     * 获取成为店铺导购的信息
     * @param user_tocken
     * @param service
     * @param page
     * @param params
     * @return
     */
    @POST("member")
    Observable<BaseResponse<ShoppersHistoricalBean>> getGuiderHistory(@Query("user_token") String user_tocken, @Query("service") String service, @Query("page") String page, @Query("params") String params);

    /**
     * 删除店铺导购
     * @param user_tocken
     * @param service
     * @param params
     * @return
     */
    @POST("member")
    Observable<BaseResponse<EmptyInfo>> deleteShopGuider(@Query("user_token") String user_tocken, @Query("service") String service, @Query("params") String params);

    /**
     * h获取默认搜索门店
     * @param appToken
     * @param service
     * @param params
     * @return
     */
    @POST("member")
    Observable<BaseResponse<StoreInfo>> getDefaultSearchStore(@Query("app_token") String appToken, @Query("service") String service, @Query("params") String params);

    /**
     * 获取成为店铺导购的信息
     * @param appToken
     * @param service
     * @param page
     * @param params
     * @return
     */
    @POST("member")
    Observable<BaseResponse<StoreInfo>> getSearchStores(@Query("app_token") String appToken, @Query("service") String service, @Query("page") String page, @Query("params") String params);

}
